package com.atguigu.gmall.realtime.utils;

import org.wltea.analyzer.core.IKSegmenter;
import org.wltea.analyzer.core.Lexeme;

import java.io.IOException;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.List;

/**
 * @Description: 分词工具类, 给定一个搜索字符串, 返回一个List<String>
 * @Author: tiancy
 * @Create: 2021/12/10
 */
public class KeywordUtil {

    /**
     * 使用IK分词器对字符串进行分词
     *
     * @param text 给定的搜索串
     * @return 返回一个List<关键词>
     */
    public static List<String> analyze(String text) {
        StringReader sr = new StringReader(text);
        // 两个参数,第一个参数 : 需要一个构建的String类型的输入流.第二个参数 : 是否使用智能分词.
        IKSegmenter ik = new IKSegmenter(sr, true);
        Lexeme lex = null;
        List<String> keywordList = new ArrayList();
        while (true) {
            try {
                if ((lex = ik.next()) != null) {
                    String lexemeText = lex.getLexemeText();
                    keywordList.add(lexemeText);
                } else {
                    break;
                }
            } catch (IOException e) {
                e.printStackTrace();
            }

        }
        return keywordList;
    }

    public static void main(String[] args) {
        String text = "Apple iPhoneXSMax (A2104) 256GB 深空灰色 移动联通电信4G手机 双卡双待";
        System.out.println(KeywordUtil.analyze(text));
    }
}
